package com.xiaoyi.annotataion;

import com.xiaoyi.enums.AlgorithmEnum;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 加解密注解
 *
 * @author xiaoyi
 * @version 1.0.0
 * @date 2023/7/30 15:10
 */
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.PARAMETER})
public @interface Encrypt {

    /**
     * 加密类型
     */
    AlgorithmEnum algorithm() default AlgorithmEnum.AES;

    /**
     * （同一个类中，）字段的加密解密顺序
     */
    int order() default 0;

    /**
     * 预留字段
     */
    String ext() default "";

    /*是否存储加密*/
    boolean enableEncrypt() default true;

    /*是否解密返回*/
    boolean enableDecrypt() default true;

    /*加解密的秘钥*/
    String password() default "";

    String publicKey() default "";

    String privateKey() default "";
}
